CD_SONG_XU

Overview

Calculate drag coefficient of a particle using the Song-Xu correlation for spherical and non-spherical particles.

Excel Usage

=CD_SONG_XU(Re, sphericity, S)
  • Re (float, required): Particle Reynolds number [-]
  • sphericity (float, optional, default: 1): Sphericity of the particle (1.0 for sphere)
  • S (float, optional, default: 1): Ratio of equivalent sphere area to projected area [-]

Returns (float): Drag coefficient [-], or error message (str) if input is invalid.

Examples

Example 1: Sphere at Re = 30

Inputs:

Re
30

Excel formula:

=CD_SONG_XU(30)

Expected output:

Result
2.3431

Example 2: Sphere at Re = 100

Inputs:

Re
100

Excel formula:

=CD_SONG_XU(100)

Expected output:

Result
1.1614

Example 3: Non-spherical particle

Inputs:

Re sphericity S
50 0.8 1.2

Excel formula:

=CD_SONG_XU(50, 0.8, 1.2)

Expected output:

Result
1.8969

Example 4: Cube-like particle

Inputs:

Re sphericity S
30 0.806 1

Excel formula:

=CD_SONG_XU(30, 0.806, 1)

Expected output:

Result
2.6957

Python Code

import micropip
await micropip.install(["fluids"])
from fluids.drag import Song_Xu as fluids_Song_Xu

def cd_song_xu(Re, sphericity=1, S=1):
    """
    Calculate drag coefficient of a particle using the Song-Xu correlation for spherical and non-spherical particles.

    See: https://fluids.readthedocs.io/fluids.drag.html#fluids.drag.Song_Xu

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Particle Reynolds number [-]
        sphericity (float, optional): Sphericity of the particle (1.0 for sphere) Default is 1.
        S (float, optional): Ratio of equivalent sphere area to projected area [-] Default is 1.

    Returns:
        float: Drag coefficient [-], or error message (str) if input is invalid.
    """
    # Validate inputs
    try:
        Re = float(Re)
        sphericity = float(sphericity)
        S = float(S)
    except (ValueError, TypeError):
        return "Error: All parameters must be numbers."

    if Re <= 0:
        return "Error: Re must be positive."
    if sphericity <= 0 or sphericity > 1:
        return "Error: Sphericity must be between 0 and 1."
    if S <= 0:
        return "Error: S must be positive."

    try:
        result = fluids_Song_Xu(Re=Re, sphericity=sphericity, S=S)
        if result != result:  # NaN check
            return "Calculation resulted in NaN."
        return float(result)
    except Exception as e:
        return f"Error: {str(e)}"

Online Calculator